package ui.swing.popup;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JApplet;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JTextField;

import ui.swing.Console;


public class Popup extends JApplet {

	private JPopupMenu popup = new JPopupMenu();
	private JTextField t = new JTextField(10);

	public void init() {
		Container cp = getContentPane();
		cp.setLayout(new FlowLayout());
		cp.add(t);
		
		ActionListener al = new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				t.setText(((JMenuItem)e.getSource()).getText());
			}
		};
		JMenuItem m = new JMenuItem("Hither");
		m.addActionListener(al);
		popup.add(m);
		
		m = new JMenuItem("Yon");
		m.addActionListener(al);
		popup.add(m);
		
		m = new JMenuItem("Afar");
		m.addActionListener(al);
		popup.add(m);
		
		popup.addSeparator();
		
		m = new JMenuItem("Stay Here");
		m.addActionListener(al);
		popup.add(m);
		
		PopupListener pl =new PopupListener();
		
		addMouseListener(pl);
	}
	
	class PopupListener extends MouseAdapter {
		
		public void mousePressed(MouseEvent e) {
			maybeShowPopup(e);
		}
		
		public void mouseReleased(MouseEvent e) {
			maybeShowPopup(e);
		}
		
		private void maybeShowPopup(MouseEvent e) {
			if(e.isPopupTrigger()) {
				popup.show(((JApplet)e.getComponent()).getContentPane(), e.getX(), e.getY());
			}
		}
	}

	public static void main(String[] args) {
		Console.run(new Popup(), 300, 300);
	}
	
}
